// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// $Rev: 18756 $
// File generated on 2013-3-21 23:23:57 from Type Library described below.

// ************************************************************************  //
// Type Lib: C:\WINDOWS\system32\msscript.ocx (1)
// LIBID: {0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}
// LCID: 0
// Helpfile: C:\WINDOWS\system32\MSSCRIPT.HLP
// HelpString: Microsoft Script Control 1.0
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb)
// ************************************************************************ //
#ifndef   MSScriptControl_TLBH
#define   MSScriptControl_TLBH

#pragma option push -b -a4 -w-inl

#if !defined(__UTILCLS_H)
#include <utilcls.h>
#endif
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0700)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary 
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an 
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
       "You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if defined(USING_ATLVCL) || defined(USING_ATL)
#if !defined(__TLB_NO_EVENT_WRAPPERS)
#include <atl/atlmod.h>
#endif
#endif


// *********************************************************************//
// Forward reference of some VCL types (to avoid including STDVCL.HPP)    
// *********************************************************************//
namespace Stdvcl {class IStrings; class IStringsDisp;}
using namespace Stdvcl;
typedef TComInterface<IStrings> IStringsPtr;
typedef TComInterface<IStringsDisp> IStringsDispPtr;

namespace Msscriptcontrol_tlb
{

// *********************************************************************//
// HelpString: Microsoft Script Control 1.0
// Version:    1.0
// *********************************************************************//


// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:        
//   Type Libraries     : LIBID_xxxx                                      
//   CoClasses          : CLSID_xxxx                                      
//   DISPInterfaces     : DIID_xxxx                                       
//   Non-DISP interfaces: IID_xxxx                                        
// *********************************************************************//
extern __declspec (package) const GUID LIBID_MSScriptControl;
extern __declspec (package) const GUID GUID_ScriptControlConstants;
extern __declspec (package) const GUID GUID_ScriptControlStates;
extern __declspec (package) const GUID IID_IScriptProcedure;
extern __declspec (package) const GUID IID_IScriptProcedureCollection;
extern __declspec (package) const GUID IID_IScriptModule;
extern __declspec (package) const GUID IID_IScriptModuleCollection;
extern __declspec (package) const GUID IID_IScriptError;
extern __declspec (package) const GUID IID_IScriptControl;
extern __declspec (package) const GUID DIID_DScriptControlSource;
extern __declspec (package) const GUID CLSID_Procedure;
extern __declspec (package) const GUID CLSID_Procedures;
extern __declspec (package) const GUID CLSID_Module;
extern __declspec (package) const GUID CLSID_Modules;
extern __declspec (package) const GUID CLSID_Error;
extern __declspec (package) const GUID CLSID_ScriptControl;

// *********************************************************************//
// Forward declaration of types defined in TypeLibrary                    
// *********************************************************************//
enum class    ScriptControlStates;
interface DECLSPEC_UUID("{70841C73-067D-11D0-95D8-00A02463AB28}") IScriptProcedure;
typedef TComInterface<IScriptProcedure, &IID_IScriptProcedure> IScriptProcedurePtr;

interface DECLSPEC_UUID("{70841C71-067D-11D0-95D8-00A02463AB28}") IScriptProcedureCollection;
typedef TComInterface<IScriptProcedureCollection, &IID_IScriptProcedureCollection> IScriptProcedureCollectionPtr;

interface DECLSPEC_UUID("{70841C70-067D-11D0-95D8-00A02463AB28}") IScriptModule;
typedef TComInterface<IScriptModule, &IID_IScriptModule> IScriptModulePtr;

interface DECLSPEC_UUID("{70841C6F-067D-11D0-95D8-00A02463AB28}") IScriptModuleCollection;
typedef TComInterface<IScriptModuleCollection, &IID_IScriptModuleCollection> IScriptModuleCollectionPtr;

interface DECLSPEC_UUID("{70841C78-067D-11D0-95D8-00A02463AB28}") IScriptError;
typedef TComInterface<IScriptError, &IID_IScriptError> IScriptErrorPtr;

interface DECLSPEC_UUID("{0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC}") IScriptControl;
typedef TComInterface<IScriptControl, &IID_IScriptControl> IScriptControlPtr;

interface DECLSPEC_UUID("{8B167D60-8605-11D0-ABCB-00A0C90FFFC0}") DScriptControlSource;
typedef TComInterface<DScriptControlSource, &DIID_DScriptControlSource> DScriptControlSourcePtr;


// *********************************************************************//
// Declaration of CoClasses defined in Type Library                       
// (NOTE: Here we map each CoClass to its Default Interface)              
//                                                                        
// The LIBID_OF_ macro(s) map a LIBID_OF_CoClassName to the GUID of this  
// TypeLibrary. It simplifies the updating of macros when CoClass name    
// change.                                                                
// *********************************************************************//
typedef IScriptProcedure Procedure;
typedef IScriptProcedurePtr ProcedurePtr;
typedef IScriptProcedureCollection Procedures;
typedef IScriptProcedureCollectionPtr ProceduresPtr;
typedef IScriptModule Module;
typedef IScriptModulePtr ModulePtr;
typedef IScriptModuleCollection Modules;
typedef IScriptModuleCollectionPtr ModulesPtr;
typedef IScriptError Error;
typedef IScriptErrorPtr ErrorPtr;
typedef IScriptControl ScriptControl;
typedef IScriptControlPtr ScriptControlPtr;

#define LIBID_OF_Procedure (&LIBID_MSScriptControl)
#define LIBID_OF_Procedures (&LIBID_MSScriptControl)
#define LIBID_OF_Module (&LIBID_MSScriptControl)
#define LIBID_OF_Modules (&LIBID_MSScriptControl)
#define LIBID_OF_Error (&LIBID_MSScriptControl)
#define LIBID_OF_ScriptControl (&LIBID_MSScriptControl)

// *********************************************************************//
// Declaration of Enumerations defined in Type Library                    
// *********************************************************************//
enum class ScriptControlStates
{
  Initialized = 0, 
  Connected = 1
};

// *********************************************************************//
// Interface: IScriptProcedure
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C73-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
interface IScriptProcedure  : public IDispatch
{
public:
  // [0] Name of the procedure
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstrName/*[out,retval]*/) = 0;
  // [100] Number of arguments that are expected
  virtual HRESULT STDMETHODCALLTYPE get_NumArgs(long* pcArgs/*[out,retval]*/) = 0;
  // [101] True if procedure returns a value
  virtual HRESULT STDMETHODCALLTYPE get_HasReturnValue(VARIANT_BOOL* pfHasReturnValue/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstrName = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstrName));
    return pbstrName;
  }

  long __fastcall get_NumArgs(void)
  {
    long pcArgs;
    OLECHECK(this->get_NumArgs((long*)&pcArgs));
    return pcArgs;
  }

  VARIANT_BOOL __fastcall get_HasReturnValue(void)
  {
    VARIANT_BOOL pfHasReturnValue;
    OLECHECK(this->get_HasReturnValue((VARIANT_BOOL*)&pfHasReturnValue));
    return pfHasReturnValue;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   long            NumArgs = {read = get_NumArgs};
  __property   VARIANT_BOOL    HasReturnValue = {read = get_HasReturnValue};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IScriptProcedureCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C71-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
interface IScriptProcedureCollection  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get__NewEnum(LPUNKNOWN* ppenumProcedures/*[out,retval]*/) = 0; // [-4]
  // [0] Get a procedure indexed by position or procedure name
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Msscriptcontrol_tlb::IScriptProcedure** ppdispProcedure/*[out,retval]*/) = 0;
  // [1] Number of procedures
  virtual HRESULT STDMETHODCALLTYPE get_Count(long* plCount/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  LPUNKNOWN __fastcall get__NewEnum(void)
  {
    LPUNKNOWN ppenumProcedures;
    OLECHECK(this->get__NewEnum((LPUNKNOWN*)&ppenumProcedures));
    return ppenumProcedures;
  }

  Msscriptcontrol_tlb::IScriptProcedure* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Msscriptcontrol_tlb::IScriptProcedure* ppdispProcedure = 0;
    OLECHECK(this->get_Item(Index, (Msscriptcontrol_tlb::IScriptProcedure**)&ppdispProcedure));
    return ppdispProcedure;
  }

  long __fastcall get_Count(void)
  {
    long plCount;
    OLECHECK(this->get_Count((long*)&plCount));
    return plCount;
  }


  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IScriptModule
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C70-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
interface IScriptModule  : public IDispatch
{
public:
  // [0] Name of the module
  virtual HRESULT STDMETHODCALLTYPE get_Name(BSTR* pbstrName/*[out,retval]*/) = 0;
  // [1000] Object exposed by the scripting engine that contains methods and properties defined in the code added to the module
  virtual HRESULT STDMETHODCALLTYPE get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/) = 0;
  // [1001] Collection of procedures that are defined in the module
  virtual HRESULT STDMETHODCALLTYPE get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/) = 0;
  // [2000] Add code to the module
  virtual HRESULT STDMETHODCALLTYPE AddCode(BSTR Code/*[in]*/) = 0;
  // [2001] Evaluate an expression within the context of the module
  virtual HRESULT STDMETHODCALLTYPE Eval(BSTR Expression/*[in]*/, 
                                         VARIANT* pvarResult/*[out,retval]*/) = 0;
  // [2002] Execute a statement within the context of the module
  virtual HRESULT STDMETHODCALLTYPE ExecuteStatement(BSTR Statement/*[in]*/) = 0;
  // [2003] Call a procedure defined in the module
  virtual HRESULT STDMETHODCALLTYPE Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                        VARIANT* pvarResult/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_Name(void)
  {
    BSTR pbstrName = 0;
    OLECHECK(this->get_Name((BSTR*)&pbstrName));
    return pbstrName;
  }

  LPDISPATCH __fastcall get_CodeObject(void)
  {
    LPDISPATCH ppdispObject;
    OLECHECK(this->get_CodeObject((LPDISPATCH*)&ppdispObject));
    return ppdispObject;
  }

  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void)
  {
    Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
    OLECHECK(this->get_Procedures(&ppdispProcedures));
    return ppdispProcedures;
  }

  VARIANT __fastcall Eval(BSTR Expression/*[in]*/)
  {
    VARIANT pvarResult;
    OLECHECK(this->Eval(Expression, (VARIANT*)&pvarResult));
    return pvarResult;
  }

  VARIANT __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
  {
    VARIANT pvarResult;
    OLECHECK(this->Run(ProcedureName, Parameters, (VARIANT*)&pvarResult));
    return pvarResult;
  }


  __property   BSTR            Name = {read = get_Name};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IScriptModuleCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C6F-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
interface IScriptModuleCollection  : public IDispatch
{
public:
  virtual HRESULT STDMETHODCALLTYPE get__NewEnum(LPUNKNOWN* ppenumContexts/*[out,retval]*/) = 0; // [-4]
  // [0] Get a module indexed by position or module name
  virtual HRESULT STDMETHODCALLTYPE get_Item(VARIANT Index/*[in]*/, 
                                             Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/) = 0;
  // [1] Number of modules
  virtual HRESULT STDMETHODCALLTYPE get_Count(long* plCount/*[out,retval]*/) = 0;
  // [2] Add a new module
  virtual HRESULT STDMETHODCALLTYPE Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/, 
                                        Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  LPUNKNOWN __fastcall get__NewEnum(void)
  {
    LPUNKNOWN ppenumContexts;
    OLECHECK(this->get__NewEnum((LPUNKNOWN*)&ppenumContexts));
    return ppenumContexts;
  }

  Msscriptcontrol_tlb::IScriptModule* __fastcall get_Item(VARIANT Index/*[in]*/)
  {
    Msscriptcontrol_tlb::IScriptModule* ppmod = 0;
    OLECHECK(this->get_Item(Index, (Msscriptcontrol_tlb::IScriptModule**)&ppmod));
    return ppmod;
  }

  long __fastcall get_Count(void)
  {
    long plCount;
    OLECHECK(this->get_Count((long*)&plCount));
    return plCount;
  }

  Msscriptcontrol_tlb::IScriptModule* __fastcall Add(BSTR Name/*[in]*/, 
                                                     VARIANT* Object/*[in,opt]*/= TNoParam())
  {
    Msscriptcontrol_tlb::IScriptModule* ppmod = 0;
    OLECHECK(this->Add(Name, Object, (Msscriptcontrol_tlb::IScriptModule**)&ppmod));
    return ppmod;
  }


  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IScriptError
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C78-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
interface IScriptError  : public IDispatch
{
public:
  // [201] Error number
  virtual HRESULT STDMETHODCALLTYPE get_Number(long* plNumber/*[out,retval]*/) = 0;
  // [202] Source of the error
  virtual HRESULT STDMETHODCALLTYPE get_Source(BSTR* pbstrSource/*[out,retval]*/) = 0;
  // [203] Friendly description of error
  virtual HRESULT STDMETHODCALLTYPE get_Description(BSTR* pbstrDescription/*[out,retval]*/) = 0;
  // [204] File in which help for the error can be found
  virtual HRESULT STDMETHODCALLTYPE get_HelpFile(BSTR* pbstrHelpFile/*[out,retval]*/) = 0;
  // [205] Context ID for the topic with information on the error
  virtual HRESULT STDMETHODCALLTYPE get_HelpContext(long* plHelpContext/*[out,retval]*/) = 0;
  // [-517] Line of source code on which the error occurred
  virtual HRESULT STDMETHODCALLTYPE get_Text(BSTR* pbstrText/*[out,retval]*/) = 0;
  // [206] Source code line number where the error occurred
  virtual HRESULT STDMETHODCALLTYPE get_Line(long* plLine/*[out,retval]*/) = 0;
  // [-529] Source code column position where the error occurred
  virtual HRESULT STDMETHODCALLTYPE get_Column(long* plColumn/*[out,retval]*/) = 0;
  // [208] Clear the script error
  virtual HRESULT STDMETHODCALLTYPE Clear(void) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  long __fastcall get_Number(void)
  {
    long plNumber;
    OLECHECK(this->get_Number((long*)&plNumber));
    return plNumber;
  }

  BSTR __fastcall get_Source(void)
  {
    BSTR pbstrSource = 0;
    OLECHECK(this->get_Source((BSTR*)&pbstrSource));
    return pbstrSource;
  }

  BSTR __fastcall get_Description(void)
  {
    BSTR pbstrDescription = 0;
    OLECHECK(this->get_Description((BSTR*)&pbstrDescription));
    return pbstrDescription;
  }

  BSTR __fastcall get_HelpFile(void)
  {
    BSTR pbstrHelpFile = 0;
    OLECHECK(this->get_HelpFile((BSTR*)&pbstrHelpFile));
    return pbstrHelpFile;
  }

  long __fastcall get_HelpContext(void)
  {
    long plHelpContext;
    OLECHECK(this->get_HelpContext((long*)&plHelpContext));
    return plHelpContext;
  }

  BSTR __fastcall get_Text(void)
  {
    BSTR pbstrText = 0;
    OLECHECK(this->get_Text((BSTR*)&pbstrText));
    return pbstrText;
  }

  long __fastcall get_Line(void)
  {
    long plLine;
    OLECHECK(this->get_Line((long*)&plLine));
    return plLine;
  }

  long __fastcall get_Column(void)
  {
    long plColumn;
    OLECHECK(this->get_Column((long*)&plColumn));
    return plColumn;
  }


  __property   long            Number = {read = get_Number};
  __property   BSTR            Source = {read = get_Source};
  __property   BSTR            Description = {read = get_Description};
  __property   BSTR            HelpFile = {read = get_HelpFile};
  __property   long            HelpContext = {read = get_HelpContext};
  __property   BSTR            Text = {read = get_Text};
  __property   long            Line = {read = get_Line};
  __property   long            Column = {read = get_Column};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: IScriptControl
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC}
// *********************************************************************//
interface IScriptControl  : public IDispatch
{
public:
  // [1500] Language engine to use
  virtual HRESULT STDMETHODCALLTYPE get_Language(BSTR* pbstrLanguage/*[out,retval]*/) = 0;
  // [1500] Language engine to use
  virtual HRESULT STDMETHODCALLTYPE set_Language(BSTR pbstrLanguage/*[in]*/) = 0;
  // [1501] State of the control
  virtual HRESULT STDMETHODCALLTYPE get_State(Msscriptcontrol_tlb::ScriptControlStates* pssState/*[out,retval]*/) = 0;
  // [1501] State of the control
  virtual HRESULT STDMETHODCALLTYPE set_State(Msscriptcontrol_tlb::ScriptControlStates pssState/*[in]*/) = 0;
  // [1502] hWnd used as a parent for displaying UI
  virtual HRESULT STDMETHODCALLTYPE set_SitehWnd(long phwnd/*[in]*/) = 0;
  // [1502] hWnd used as a parent for displaying UI
  virtual HRESULT STDMETHODCALLTYPE get_SitehWnd(long* phwnd/*[out,retval]*/) = 0;
  // [1503] Length of time in milliseconds that a script can execute before being considered hung
  virtual HRESULT STDMETHODCALLTYPE get_Timeout(long* plMilleseconds/*[out,retval]*/) = 0;
  // [1503] Length of time in milliseconds that a script can execute before being considered hung
  virtual HRESULT STDMETHODCALLTYPE set_Timeout(long plMilleseconds/*[in]*/) = 0;
  // [1504] Enable or disable display of the UI
  virtual HRESULT STDMETHODCALLTYPE get_AllowUI(VARIANT_BOOL* pfAllowUI/*[out,retval]*/) = 0;
  // [1504] Enable or disable display of the UI
  virtual HRESULT STDMETHODCALLTYPE set_AllowUI(VARIANT_BOOL pfAllowUI/*[in]*/) = 0;
  // [1505] Force script to execute in safe mode and disallow potentially harmful actions
  virtual HRESULT STDMETHODCALLTYPE get_UseSafeSubset(VARIANT_BOOL* pfUseSafeSubset/*[out,retval]*/) = 0;
  // [1505] Force script to execute in safe mode and disallow potentially harmful actions
  virtual HRESULT STDMETHODCALLTYPE set_UseSafeSubset(VARIANT_BOOL pfUseSafeSubset/*[in]*/) = 0;
  // [1506] Collection of modules for the ScriptControl
  virtual HRESULT STDMETHODCALLTYPE get_Modules(Msscriptcontrol_tlb::IScriptModuleCollection** ppmods/*[out,retval]*/) = 0;
  // [1507] The last error reported by the scripting engine
  virtual HRESULT STDMETHODCALLTYPE get_Error(Msscriptcontrol_tlb::IScriptError** ppse/*[out,retval]*/) = 0;
  // [1000] Object exposed by the scripting engine that contains methods and properties defined in the code added to the global module
  virtual HRESULT STDMETHODCALLTYPE get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/) = 0;
  // [1001] Collection of procedures that are defined in the global module
  virtual HRESULT STDMETHODCALLTYPE get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/) = 0;
  virtual HRESULT STDMETHODCALLTYPE _AboutBox(void) = 0; // [-552]
  // [2500] Add an object to the global namespace of the scripting engine
  virtual HRESULT STDMETHODCALLTYPE AddObject(BSTR Name/*[in]*/, LPDISPATCH Object/*[in]*/, 
                                              VARIANT_BOOL AddMembers/*[in,def,opt]*/) = 0;
  // [2501] Reset the scripting engine to a newly created state
  virtual HRESULT STDMETHODCALLTYPE Reset(void) = 0;
  // [2000] Add code to the global module
  virtual HRESULT STDMETHODCALLTYPE AddCode(BSTR Code/*[in]*/) = 0;
  // [2001] Evaluate an expression within the context of the global module
  virtual HRESULT STDMETHODCALLTYPE Eval(BSTR Expression/*[in]*/, 
                                         VARIANT* pvarResult/*[out,retval]*/) = 0;
  // [2002] Execute a statement within the context of the global module
  virtual HRESULT STDMETHODCALLTYPE ExecuteStatement(BSTR Statement/*[in]*/) = 0;
  // [2003] Call a procedure defined in the global module
  virtual HRESULT STDMETHODCALLTYPE Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                        VARIANT* pvarResult/*[out,retval]*/) = 0;

#if !defined(__TLB_NO_INTERFACE_WRAPPERS)

  BSTR __fastcall get_Language(void)
  {
    BSTR pbstrLanguage = 0;
    OLECHECK(this->get_Language((BSTR*)&pbstrLanguage));
    return pbstrLanguage;
  }

  Msscriptcontrol_tlb::ScriptControlStates __fastcall get_State(void)
  {
    Msscriptcontrol_tlb::ScriptControlStates pssState;
    OLECHECK(this->get_State((Msscriptcontrol_tlb::ScriptControlStates*)&pssState));
    return pssState;
  }

  long __fastcall get_SitehWnd(void)
  {
    long phwnd;
    OLECHECK(this->get_SitehWnd((long*)&phwnd));
    return phwnd;
  }

  long __fastcall get_Timeout(void)
  {
    long plMilleseconds;
    OLECHECK(this->get_Timeout((long*)&plMilleseconds));
    return plMilleseconds;
  }

  VARIANT_BOOL __fastcall get_AllowUI(void)
  {
    VARIANT_BOOL pfAllowUI;
    OLECHECK(this->get_AllowUI((VARIANT_BOOL*)&pfAllowUI));
    return pfAllowUI;
  }

  VARIANT_BOOL __fastcall get_UseSafeSubset(void)
  {
    VARIANT_BOOL pfUseSafeSubset;
    OLECHECK(this->get_UseSafeSubset((VARIANT_BOOL*)&pfUseSafeSubset));
    return pfUseSafeSubset;
  }

  Msscriptcontrol_tlb::IScriptModuleCollectionPtr __fastcall get_Modules(void)
  {
    Msscriptcontrol_tlb::IScriptModuleCollectionPtr ppmods;
    OLECHECK(this->get_Modules(&ppmods));
    return ppmods;
  }

  Msscriptcontrol_tlb::IScriptErrorPtr __fastcall get_Error(void)
  {
    Msscriptcontrol_tlb::IScriptErrorPtr ppse;
    OLECHECK(this->get_Error(&ppse));
    return ppse;
  }

  LPDISPATCH __fastcall get_CodeObject(void)
  {
    LPDISPATCH ppdispObject;
    OLECHECK(this->get_CodeObject((LPDISPATCH*)&ppdispObject));
    return ppdispObject;
  }

  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void)
  {
    Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
    OLECHECK(this->get_Procedures(&ppdispProcedures));
    return ppdispProcedures;
  }

  VARIANT __fastcall Eval(BSTR Expression/*[in]*/)
  {
    VARIANT pvarResult;
    OLECHECK(this->Eval(Expression, (VARIANT*)&pvarResult));
    return pvarResult;
  }

  VARIANT __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
  {
    VARIANT pvarResult;
    OLECHECK(this->Run(ProcedureName, Parameters, (VARIANT*)&pvarResult));
    return pvarResult;
  }


  __property   BSTR            Language = {read = get_Language, write = set_Language};
  __property   Msscriptcontrol_tlb::ScriptControlStates State = {read = get_State, write = set_State};
  __property   long            SitehWnd = {read = get_SitehWnd, write = set_SitehWnd};
  __property   long            Timeout = {read = get_Timeout, write = set_Timeout};
  __property   VARIANT_BOOL    AllowUI = {read = get_AllowUI, write = set_AllowUI};
  __property   VARIANT_BOOL    UseSafeSubset = {read = get_UseSafeSubset, write = set_UseSafeSubset};
  __property   Msscriptcontrol_tlb::IScriptModuleCollectionPtr Modules = {read = get_Modules};
  __property   Msscriptcontrol_tlb::IScriptErrorPtr Error = {read = get_Error};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};

#endif //   __TLB_NO_INTERFACE_WRAPPERS

};

// *********************************************************************//
// Interface: DScriptControlSource
// Flags:     (4112) Hidden Dispatchable
// GUID:      {8B167D60-8605-11D0-ABCB-00A0C90FFFC0}
// *********************************************************************//
interface DScriptControlSource : public TDispWrapper<IDispatch>
{
  void __fastcall Error()
  {
    _TDispID _dispid(/* Error */ DISPID(3000));
    OleProcedure(_dispid);
  }

  void __fastcall Timeout()
  {
    _TDispID _dispid(/* Timeout */ DISPID(3001));
    OleProcedure(_dispid);
  }


};
#if !defined(__TLB_NO_INTERFACE_WRAPPERS)
// *********************************************************************//
// SmartIntf: TCOMIScriptProcedure
// Interface: IScriptProcedure
// *********************************************************************//
template <class T /* IScriptProcedure */ >
class TCOMIScriptProcedureT : public TComInterface<IScriptProcedure>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptProcedureT() {}
  TCOMIScriptProcedureT(IScriptProcedure *intf, bool addRef = false) : TComInterface<IScriptProcedure>(intf, addRef) {}
  TCOMIScriptProcedureT(const TCOMIScriptProcedureT& src) : TComInterface<IScriptProcedure>(src) {}
  TCOMIScriptProcedureT& operator=(const TCOMIScriptProcedureT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_NumArgs(long* pcArgs/*[out,retval]*/);
  long            __fastcall get_NumArgs(void);
  HRESULT         __fastcall get_HasReturnValue(VARIANT_BOOL* pfHasReturnValue/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_HasReturnValue(void);

  __property   BSTR            Name = {read = get_Name};
  __property   long            NumArgs = {read = get_NumArgs};
  __property   VARIANT_BOOL    HasReturnValue = {read = get_HasReturnValue};
};
typedef TCOMIScriptProcedureT<IScriptProcedure> TCOMIScriptProcedure;

// *********************************************************************//
// DispIntf:  IScriptProcedure
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C73-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template<class T>
class IScriptProcedureDispT : public TAutoDriver<IScriptProcedure>
{
public:
  IScriptProcedureDispT(){}

  IScriptProcedureDispT(IScriptProcedure *pintf)
  {
    TAutoDriver<IScriptProcedure>::Bind(pintf, false);
  }

  IScriptProcedureDispT(IScriptProcedurePtr pintf)
  {
    TAutoDriver<IScriptProcedure>::Bind(pintf, true);
  }

  IScriptProcedureDispT& operator=(IScriptProcedure *pintf)
  {
    TAutoDriver<IScriptProcedure>::Bind(pintf, false);
    return *this;
  }

  IScriptProcedureDispT& operator=(IScriptProcedurePtr pintf)
  {
    TAutoDriver<IScriptProcedure>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Procedure));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Procedure);
  }

  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_NumArgs(long* pcArgs/*[out,retval]*/);
  long            __fastcall get_NumArgs(void);
  HRESULT         __fastcall get_HasReturnValue(VARIANT_BOOL* pfHasReturnValue/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_HasReturnValue(void);

  __property   BSTR            Name = {read = get_Name};
  __property   long            NumArgs = {read = get_NumArgs};
  __property   VARIANT_BOOL    HasReturnValue = {read = get_HasReturnValue};
};
typedef IScriptProcedureDispT<IScriptProcedure> IScriptProcedureDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptProcedureCollection
// Interface: IScriptProcedureCollection
// *********************************************************************//
template <class T /* IScriptProcedureCollection */ >
class TCOMIScriptProcedureCollectionT : public TComInterface<IScriptProcedureCollection>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptProcedureCollectionT() {}
  TCOMIScriptProcedureCollectionT(IScriptProcedureCollection *intf, bool addRef = false) : TComInterface<IScriptProcedureCollection>(intf, addRef) {}
  TCOMIScriptProcedureCollectionT(const TCOMIScriptProcedureCollectionT& src) : TComInterface<IScriptProcedureCollection>(src) {}
  TCOMIScriptProcedureCollectionT& operator=(const TCOMIScriptProcedureCollectionT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get__NewEnum(LPUNKNOWN* ppenumProcedures/*[out,retval]*/);
  LPUNKNOWN       __fastcall get__NewEnum(void);
  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Msscriptcontrol_tlb::IScriptProcedure** ppdispProcedure/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedure* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* plCount/*[out,retval]*/);
  long            __fastcall get_Count(void);

  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};
};
typedef TCOMIScriptProcedureCollectionT<IScriptProcedureCollection> TCOMIScriptProcedureCollection;

// *********************************************************************//
// DispIntf:  IScriptProcedureCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C71-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template<class T>
class IScriptProcedureCollectionDispT : public TAutoDriver<IScriptProcedureCollection>
{
public:
  IScriptProcedureCollectionDispT(){}

  IScriptProcedureCollectionDispT(IScriptProcedureCollection *pintf)
  {
    TAutoDriver<IScriptProcedureCollection>::Bind(pintf, false);
  }

  IScriptProcedureCollectionDispT(IScriptProcedureCollectionPtr pintf)
  {
    TAutoDriver<IScriptProcedureCollection>::Bind(pintf, true);
  }

  IScriptProcedureCollectionDispT& operator=(IScriptProcedureCollection *pintf)
  {
    TAutoDriver<IScriptProcedureCollection>::Bind(pintf, false);
    return *this;
  }

  IScriptProcedureCollectionDispT& operator=(IScriptProcedureCollectionPtr pintf)
  {
    TAutoDriver<IScriptProcedureCollection>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Procedures));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Procedures);
  }

  HRESULT         __fastcall get__NewEnum(LPUNKNOWN* ppenumProcedures/*[out,retval]*/);
  LPUNKNOWN       __fastcall get__NewEnum(void);
  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Msscriptcontrol_tlb::IScriptProcedure** ppdispProcedure/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedure* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* plCount/*[out,retval]*/);
  long            __fastcall get_Count(void);

  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};
};
typedef IScriptProcedureCollectionDispT<IScriptProcedureCollection> IScriptProcedureCollectionDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptModule
// Interface: IScriptModule
// *********************************************************************//
template <class T /* IScriptModule */ >
class TCOMIScriptModuleT : public TComInterface<IScriptModule>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptModuleT() {}
  TCOMIScriptModuleT(IScriptModule *intf, bool addRef = false) : TComInterface<IScriptModule>(intf, addRef) {}
  TCOMIScriptModuleT(const TCOMIScriptModuleT& src) : TComInterface<IScriptModule>(src) {}
  TCOMIScriptModuleT& operator=(const TCOMIScriptModuleT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/);
  LPDISPATCH      __fastcall get_CodeObject(void);
  HRESULT         __fastcall get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void);
  HRESULT         __fastcall AddCode(BSTR Code/*[in]*/);
  HRESULT         __fastcall Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Eval(BSTR Expression/*[in]*/);
  HRESULT         __fastcall ExecuteStatement(BSTR Statement/*[in]*/);
  HRESULT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                 VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/);

  __property   BSTR            Name = {read = get_Name};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};
};
typedef TCOMIScriptModuleT<IScriptModule> TCOMIScriptModule;

// *********************************************************************//
// DispIntf:  IScriptModule
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C70-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template<class T>
class IScriptModuleDispT : public TAutoDriver<IScriptModule>
{
public:
  IScriptModuleDispT(){}

  IScriptModuleDispT(IScriptModule *pintf)
  {
    TAutoDriver<IScriptModule>::Bind(pintf, false);
  }

  IScriptModuleDispT(IScriptModulePtr pintf)
  {
    TAutoDriver<IScriptModule>::Bind(pintf, true);
  }

  IScriptModuleDispT& operator=(IScriptModule *pintf)
  {
    TAutoDriver<IScriptModule>::Bind(pintf, false);
    return *this;
  }

  IScriptModuleDispT& operator=(IScriptModulePtr pintf)
  {
    TAutoDriver<IScriptModule>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Module));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Module);
  }

  HRESULT         __fastcall get_Name(BSTR* pbstrName/*[out,retval]*/);
  BSTR            __fastcall get_Name(void);
  HRESULT         __fastcall get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/);
  LPDISPATCH      __fastcall get_CodeObject(void);
  HRESULT         __fastcall get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void);
  HRESULT         __fastcall AddCode(BSTR Code/*[in]*/);
  HRESULT         __fastcall Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Eval(BSTR Expression/*[in]*/);
  HRESULT         __fastcall ExecuteStatement(BSTR Statement/*[in]*/);
  HRESULT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                 VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/);

  __property   BSTR            Name = {read = get_Name};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};
};
typedef IScriptModuleDispT<IScriptModule> IScriptModuleDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptModuleCollection
// Interface: IScriptModuleCollection
// *********************************************************************//
template <class T /* IScriptModuleCollection */ >
class TCOMIScriptModuleCollectionT : public TComInterface<IScriptModuleCollection>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptModuleCollectionT() {}
  TCOMIScriptModuleCollectionT(IScriptModuleCollection *intf, bool addRef = false) : TComInterface<IScriptModuleCollection>(intf, addRef) {}
  TCOMIScriptModuleCollectionT(const TCOMIScriptModuleCollectionT& src) : TComInterface<IScriptModuleCollection>(src) {}
  TCOMIScriptModuleCollectionT& operator=(const TCOMIScriptModuleCollectionT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get__NewEnum(LPUNKNOWN* ppenumContexts/*[out,retval]*/);
  LPUNKNOWN       __fastcall get__NewEnum(void);
  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModule* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* plCount/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/, 
                                 Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModule* __fastcall Add(BSTR Name/*[in]*/, 
                                                     VARIANT* Object/*[in,opt]*/= TNoParam());

  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};
};
typedef TCOMIScriptModuleCollectionT<IScriptModuleCollection> TCOMIScriptModuleCollection;

// *********************************************************************//
// DispIntf:  IScriptModuleCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C6F-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template<class T>
class IScriptModuleCollectionDispT : public TAutoDriver<IScriptModuleCollection>
{
public:
  IScriptModuleCollectionDispT(){}

  IScriptModuleCollectionDispT(IScriptModuleCollection *pintf)
  {
    TAutoDriver<IScriptModuleCollection>::Bind(pintf, false);
  }

  IScriptModuleCollectionDispT(IScriptModuleCollectionPtr pintf)
  {
    TAutoDriver<IScriptModuleCollection>::Bind(pintf, true);
  }

  IScriptModuleCollectionDispT& operator=(IScriptModuleCollection *pintf)
  {
    TAutoDriver<IScriptModuleCollection>::Bind(pintf, false);
    return *this;
  }

  IScriptModuleCollectionDispT& operator=(IScriptModuleCollectionPtr pintf)
  {
    TAutoDriver<IScriptModuleCollection>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Modules));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Modules);
  }

  HRESULT         __fastcall get__NewEnum(LPUNKNOWN* ppenumContexts/*[out,retval]*/);
  LPUNKNOWN       __fastcall get__NewEnum(void);
  HRESULT         __fastcall get_Item(VARIANT Index/*[in]*/, 
                                      Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModule* __fastcall get_Item(VARIANT Index/*[in]*/);
  HRESULT         __fastcall get_Count(long* plCount/*[out,retval]*/);
  long            __fastcall get_Count(void);
  HRESULT         __fastcall Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/, 
                                 Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModule* __fastcall Add(BSTR Name/*[in]*/, 
                                                     VARIANT* Object/*[in,opt]*/= TNoParam());

  __property   LPUNKNOWN       _NewEnum = {read = get__NewEnum};
  __property   long            Count = {read = get_Count};
};
typedef IScriptModuleCollectionDispT<IScriptModuleCollection> IScriptModuleCollectionDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptError
// Interface: IScriptError
// *********************************************************************//
template <class T /* IScriptError */ >
class TCOMIScriptErrorT : public TComInterface<IScriptError>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptErrorT() {}
  TCOMIScriptErrorT(IScriptError *intf, bool addRef = false) : TComInterface<IScriptError>(intf, addRef) {}
  TCOMIScriptErrorT(const TCOMIScriptErrorT& src) : TComInterface<IScriptError>(src) {}
  TCOMIScriptErrorT& operator=(const TCOMIScriptErrorT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_Number(long* plNumber/*[out,retval]*/);
  long            __fastcall get_Number(void);
  HRESULT         __fastcall get_Source(BSTR* pbstrSource/*[out,retval]*/);
  BSTR            __fastcall get_Source(void);
  HRESULT         __fastcall get_Description(BSTR* pbstrDescription/*[out,retval]*/);
  BSTR            __fastcall get_Description(void);
  HRESULT         __fastcall get_HelpFile(BSTR* pbstrHelpFile/*[out,retval]*/);
  BSTR            __fastcall get_HelpFile(void);
  HRESULT         __fastcall get_HelpContext(long* plHelpContext/*[out,retval]*/);
  long            __fastcall get_HelpContext(void);
  HRESULT         __fastcall get_Text(BSTR* pbstrText/*[out,retval]*/);
  BSTR            __fastcall get_Text(void);
  HRESULT         __fastcall get_Line(long* plLine/*[out,retval]*/);
  long            __fastcall get_Line(void);
  HRESULT         __fastcall get_Column(long* plColumn/*[out,retval]*/);
  long            __fastcall get_Column(void);
  HRESULT         __fastcall Clear(void);

  __property   long            Number = {read = get_Number};
  __property   BSTR            Source = {read = get_Source};
  __property   BSTR            Description = {read = get_Description};
  __property   BSTR            HelpFile = {read = get_HelpFile};
  __property   long            HelpContext = {read = get_HelpContext};
  __property   BSTR            Text = {read = get_Text};
  __property   long            Line = {read = get_Line};
  __property   long            Column = {read = get_Column};
};
typedef TCOMIScriptErrorT<IScriptError> TCOMIScriptError;

// *********************************************************************//
// DispIntf:  IScriptError
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C78-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template<class T>
class IScriptErrorDispT : public TAutoDriver<IScriptError>
{
public:
  IScriptErrorDispT(){}

  IScriptErrorDispT(IScriptError *pintf)
  {
    TAutoDriver<IScriptError>::Bind(pintf, false);
  }

  IScriptErrorDispT(IScriptErrorPtr pintf)
  {
    TAutoDriver<IScriptError>::Bind(pintf, true);
  }

  IScriptErrorDispT& operator=(IScriptError *pintf)
  {
    TAutoDriver<IScriptError>::Bind(pintf, false);
    return *this;
  }

  IScriptErrorDispT& operator=(IScriptErrorPtr pintf)
  {
    TAutoDriver<IScriptError>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_Error));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_Error);
  }

  HRESULT         __fastcall get_Number(long* plNumber/*[out,retval]*/);
  long            __fastcall get_Number(void);
  HRESULT         __fastcall get_Source(BSTR* pbstrSource/*[out,retval]*/);
  BSTR            __fastcall get_Source(void);
  HRESULT         __fastcall get_Description(BSTR* pbstrDescription/*[out,retval]*/);
  BSTR            __fastcall get_Description(void);
  HRESULT         __fastcall get_HelpFile(BSTR* pbstrHelpFile/*[out,retval]*/);
  BSTR            __fastcall get_HelpFile(void);
  HRESULT         __fastcall get_HelpContext(long* plHelpContext/*[out,retval]*/);
  long            __fastcall get_HelpContext(void);
  HRESULT         __fastcall get_Text(BSTR* pbstrText/*[out,retval]*/);
  BSTR            __fastcall get_Text(void);
  HRESULT         __fastcall get_Line(long* plLine/*[out,retval]*/);
  long            __fastcall get_Line(void);
  HRESULT         __fastcall get_Column(long* plColumn/*[out,retval]*/);
  long            __fastcall get_Column(void);
  HRESULT         __fastcall Clear();

  __property   long            Number = {read = get_Number};
  __property   BSTR            Source = {read = get_Source};
  __property   BSTR            Description = {read = get_Description};
  __property   BSTR            HelpFile = {read = get_HelpFile};
  __property   long            HelpContext = {read = get_HelpContext};
  __property   BSTR            Text = {read = get_Text};
  __property   long            Line = {read = get_Line};
  __property   long            Column = {read = get_Column};
};
typedef IScriptErrorDispT<IScriptError> IScriptErrorDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptControl
// Interface: IScriptControl
// *********************************************************************//
template <class T /* IScriptControl */ >
class TCOMIScriptControlT : public TComInterface<IScriptControl>, public TComInterfaceBase<IUnknown>
{
public:
  TCOMIScriptControlT() {}
  TCOMIScriptControlT(IScriptControl *intf, bool addRef = false) : TComInterface<IScriptControl>(intf, addRef) {}
  TCOMIScriptControlT(const TCOMIScriptControlT& src) : TComInterface<IScriptControl>(src) {}
  TCOMIScriptControlT& operator=(const TCOMIScriptControlT& src) { Bind(src, true); return *this;}

  HRESULT         __fastcall get_Language(BSTR* pbstrLanguage/*[out,retval]*/);
  BSTR            __fastcall get_Language(void);
  HRESULT         __fastcall set_Language(BSTR pbstrLanguage/*[in]*/);
  HRESULT         __fastcall get_State(Msscriptcontrol_tlb::ScriptControlStates* pssState/*[out,retval]*/);
  Msscriptcontrol_tlb::ScriptControlStates __fastcall get_State(void);
  HRESULT         __fastcall set_State(Msscriptcontrol_tlb::ScriptControlStates pssState/*[in]*/);
  HRESULT         __fastcall set_SitehWnd(long phwnd/*[in]*/);
  HRESULT         __fastcall get_SitehWnd(long* phwnd/*[out,retval]*/);
  long            __fastcall get_SitehWnd(void);
  HRESULT         __fastcall get_Timeout(long* plMilleseconds/*[out,retval]*/);
  long            __fastcall get_Timeout(void);
  HRESULT         __fastcall set_Timeout(long plMilleseconds/*[in]*/);
  HRESULT         __fastcall get_AllowUI(VARIANT_BOOL* pfAllowUI/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_AllowUI(void);
  HRESULT         __fastcall set_AllowUI(VARIANT_BOOL pfAllowUI/*[in]*/);
  HRESULT         __fastcall get_UseSafeSubset(VARIANT_BOOL* pfUseSafeSubset/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_UseSafeSubset(void);
  HRESULT         __fastcall set_UseSafeSubset(VARIANT_BOOL pfUseSafeSubset/*[in]*/);
  HRESULT         __fastcall get_Modules(Msscriptcontrol_tlb::IScriptModuleCollection** ppmods/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModuleCollectionPtr __fastcall get_Modules(void);
  HRESULT         __fastcall get_Error(Msscriptcontrol_tlb::IScriptError** ppse/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptErrorPtr __fastcall get_Error(void);
  HRESULT         __fastcall get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/);
  LPDISPATCH      __fastcall get_CodeObject(void);
  HRESULT         __fastcall get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void);
  HRESULT         __fastcall _AboutBox(void);
  HRESULT         __fastcall AddObject(BSTR Name/*[in]*/, LPDISPATCH Object/*[in]*/, 
                                       VARIANT_BOOL AddMembers/*[in,def,opt]*/);
  HRESULT         __fastcall Reset(void);
  HRESULT         __fastcall AddCode(BSTR Code/*[in]*/);
  HRESULT         __fastcall Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Eval(BSTR Expression/*[in]*/);
  HRESULT         __fastcall ExecuteStatement(BSTR Statement/*[in]*/);
  HRESULT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                 VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/);

  __property   BSTR            Language = {read = get_Language, write = set_Language};
  __property   Msscriptcontrol_tlb::ScriptControlStates State = {read = get_State, write = set_State};
  __property   long            SitehWnd = {read = get_SitehWnd, write = set_SitehWnd};
  __property   long            Timeout = {read = get_Timeout, write = set_Timeout};
  __property   VARIANT_BOOL    AllowUI = {read = get_AllowUI, write = set_AllowUI};
  __property   VARIANT_BOOL    UseSafeSubset = {read = get_UseSafeSubset, write = set_UseSafeSubset};
  __property   Msscriptcontrol_tlb::IScriptModuleCollectionPtr Modules = {read = get_Modules};
  __property   Msscriptcontrol_tlb::IScriptErrorPtr Error = {read = get_Error};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};
};
typedef TCOMIScriptControlT<IScriptControl> TCOMIScriptControl;

// *********************************************************************//
// DispIntf:  IScriptControl
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC}
// *********************************************************************//
template<class T>
class IScriptControlDispT : public TAutoDriver<IScriptControl>
{
public:
  IScriptControlDispT(){}

  IScriptControlDispT(IScriptControl *pintf)
  {
    TAutoDriver<IScriptControl>::Bind(pintf, false);
  }

  IScriptControlDispT(IScriptControlPtr pintf)
  {
    TAutoDriver<IScriptControl>::Bind(pintf, true);
  }

  IScriptControlDispT& operator=(IScriptControl *pintf)
  {
    TAutoDriver<IScriptControl>::Bind(pintf, false);
    return *this;
  }

  IScriptControlDispT& operator=(IScriptControlPtr pintf)
  {
    TAutoDriver<IScriptControl>::Bind(pintf, true);
    return *this;
  }

  HRESULT BindDefault()
  {
    return OLECHECK(Bind(CLSID_ScriptControl));
  }

  HRESULT BindRunning()
  {
    return BindToActive(CLSID_ScriptControl);
  }

  HRESULT         __fastcall get_Language(BSTR* pbstrLanguage/*[out,retval]*/);
  BSTR            __fastcall get_Language(void);
  HRESULT         __fastcall set_Language(BSTR pbstrLanguage/*[in]*/);
  HRESULT         __fastcall get_State(Msscriptcontrol_tlb::ScriptControlStates* pssState/*[out,retval]*/);
  Msscriptcontrol_tlb::ScriptControlStates __fastcall get_State(void);
  HRESULT         __fastcall set_State(Msscriptcontrol_tlb::ScriptControlStates pssState/*[in]*/);
  HRESULT         __fastcall set_SitehWnd(long phwnd/*[in]*/);
  HRESULT         __fastcall get_SitehWnd(long* phwnd/*[out,retval]*/);
  long            __fastcall get_SitehWnd(void);
  HRESULT         __fastcall get_Timeout(long* plMilleseconds/*[out,retval]*/);
  long            __fastcall get_Timeout(void);
  HRESULT         __fastcall set_Timeout(long plMilleseconds/*[in]*/);
  HRESULT         __fastcall get_AllowUI(VARIANT_BOOL* pfAllowUI/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_AllowUI(void);
  HRESULT         __fastcall set_AllowUI(VARIANT_BOOL pfAllowUI/*[in]*/);
  HRESULT         __fastcall get_UseSafeSubset(VARIANT_BOOL* pfUseSafeSubset/*[out,retval]*/);
  VARIANT_BOOL    __fastcall get_UseSafeSubset(void);
  HRESULT         __fastcall set_UseSafeSubset(VARIANT_BOOL pfUseSafeSubset/*[in]*/);
  HRESULT         __fastcall get_Modules(Msscriptcontrol_tlb::IScriptModuleCollection** ppmods/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptModuleCollectionPtr __fastcall get_Modules(void);
  HRESULT         __fastcall get_Error(Msscriptcontrol_tlb::IScriptError** ppse/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptErrorPtr __fastcall get_Error(void);
  HRESULT         __fastcall get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/);
  LPDISPATCH      __fastcall get_CodeObject(void);
  HRESULT         __fastcall get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/);
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall get_Procedures(void);
  HRESULT         __fastcall _AboutBox();
  HRESULT         __fastcall AddObject(BSTR Name/*[in]*/, LPDISPATCH Object/*[in]*/, 
                                       VARIANT_BOOL AddMembers/*[in,def,opt]*/);
  HRESULT         __fastcall Reset();
  HRESULT         __fastcall AddCode(BSTR Code/*[in]*/);
  HRESULT         __fastcall Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Eval(BSTR Expression/*[in]*/);
  HRESULT         __fastcall ExecuteStatement(BSTR Statement/*[in]*/);
  HRESULT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                                 VARIANT* pvarResult/*[out,retval]*/);
  VARIANT         __fastcall Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/);

  __property   BSTR            Language = {read = get_Language, write = set_Language};
  __property   Msscriptcontrol_tlb::ScriptControlStates State = {read = get_State, write = set_State};
  __property   long            SitehWnd = {read = get_SitehWnd, write = set_SitehWnd};
  __property   long            Timeout = {read = get_Timeout, write = set_Timeout};
  __property   VARIANT_BOOL    AllowUI = {read = get_AllowUI, write = set_AllowUI};
  __property   VARIANT_BOOL    UseSafeSubset = {read = get_UseSafeSubset, write = set_UseSafeSubset};
  __property   Msscriptcontrol_tlb::IScriptModuleCollectionPtr Modules = {read = get_Modules};
  __property   Msscriptcontrol_tlb::IScriptErrorPtr Error = {read = get_Error};
  __property   LPDISPATCH      CodeObject = {read = get_CodeObject};
  __property   Msscriptcontrol_tlb::IScriptProcedureCollectionPtr Procedures = {read = get_Procedures};
};
typedef IScriptControlDispT<IScriptControl> IScriptControlDisp;

// *********************************************************************//
// DispIntf:  DScriptControlSource
// Flags:     (4112) Hidden Dispatchable
// GUID:      {8B167D60-8605-11D0-ABCB-00A0C90FFFC0}
// *********************************************************************//
template <class T>
class DScriptControlSourceDispT : public TAutoDriver<DScriptControlSource>
{
public:
  DScriptControlSourceDispT(){}

  void Attach(LPUNKNOWN punk)
  { m_Dispatch = static_cast<T*>(punk); }

  void            __fastcall Error();
  void            __fastcall Timeout();

};
typedef DScriptControlSourceDispT<DScriptControlSource> DScriptControlSourceDisp;

// *********************************************************************//
// SmartIntf: TCOMIScriptProcedure
// Interface: IScriptProcedure
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptProcedureT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  return (*this)->get_Name(pbstrName);
}

template <class T> BSTR __fastcall
TCOMIScriptProcedureT<T>::get_Name(void)
{
  BSTR pbstrName = 0;
  OLECHECK(this->get_Name((BSTR*)&pbstrName));
  return pbstrName;
}

template <class T> HRESULT __fastcall
TCOMIScriptProcedureT<T>::get_NumArgs(long* pcArgs/*[out,retval]*/)
{
  return (*this)->get_NumArgs(pcArgs);
}

template <class T> long __fastcall
TCOMIScriptProcedureT<T>::get_NumArgs(void)
{
  long pcArgs;
  OLECHECK(this->get_NumArgs((long*)&pcArgs));
  return pcArgs;
}

template <class T> HRESULT __fastcall
TCOMIScriptProcedureT<T>::get_HasReturnValue(VARIANT_BOOL* pfHasReturnValue/*[out,retval]*/)
{
  return (*this)->get_HasReturnValue(pfHasReturnValue);
}

template <class T> VARIANT_BOOL __fastcall
TCOMIScriptProcedureT<T>::get_HasReturnValue(void)
{
  VARIANT_BOOL pfHasReturnValue;
  OLECHECK(this->get_HasReturnValue((VARIANT_BOOL*)&pfHasReturnValue));
  return pfHasReturnValue;
}

// *********************************************************************//
// DispIntf:  IScriptProcedure
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C73-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptProcedureDispT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrName /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptProcedureDispT<T>::get_Name(void)
{
  BSTR pbstrName;
  this->get_Name((BSTR*)&pbstrName);
  return pbstrName;
}

template <class T> HRESULT __fastcall
IScriptProcedureDispT<T>::get_NumArgs(long* pcArgs/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("NumArgs"), DISPID(100));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pcArgs /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptProcedureDispT<T>::get_NumArgs(void)
{
  long pcArgs;
  this->get_NumArgs((long*)&pcArgs);
  return pcArgs;
}

template <class T> HRESULT __fastcall
IScriptProcedureDispT<T>::get_HasReturnValue(VARIANT_BOOL* pfHasReturnValue/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("HasReturnValue"), DISPID(101));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfHasReturnValue /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
IScriptProcedureDispT<T>::get_HasReturnValue(void)
{
  VARIANT_BOOL pfHasReturnValue;
  this->get_HasReturnValue((VARIANT_BOOL*)&pfHasReturnValue);
  return pfHasReturnValue;
}

// *********************************************************************//
// SmartIntf: TCOMIScriptProcedureCollection
// Interface: IScriptProcedureCollection
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptProcedureCollectionT<T>::get__NewEnum(LPUNKNOWN* ppenumProcedures/*[out,retval]*/)
{
  return (*this)->get__NewEnum(ppenumProcedures);
}

template <class T> LPUNKNOWN __fastcall
TCOMIScriptProcedureCollectionT<T>::get__NewEnum(void)
{
  LPUNKNOWN ppenumProcedures;
  OLECHECK(this->get__NewEnum((LPUNKNOWN*)&ppenumProcedures));
  return ppenumProcedures;
}

template <class T> HRESULT __fastcall
TCOMIScriptProcedureCollectionT<T>::get_Item(VARIANT Index/*[in]*/, 
                                             Msscriptcontrol_tlb::IScriptProcedure** ppdispProcedure/*[out,retval]*/)
{
  return (*this)->get_Item(Index, ppdispProcedure);
}

template <class T> Msscriptcontrol_tlb::IScriptProcedure* __fastcall
TCOMIScriptProcedureCollectionT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Msscriptcontrol_tlb::IScriptProcedure* ppdispProcedure;
  OLECHECK(this->get_Item(Index/*[in]*/, (Msscriptcontrol_tlb::IScriptProcedure**)&ppdispProcedure));
  return ppdispProcedure;
}

template <class T> HRESULT __fastcall
TCOMIScriptProcedureCollectionT<T>::get_Count(long* plCount/*[out,retval]*/)
{
  return (*this)->get_Count(plCount);
}

template <class T> long __fastcall
TCOMIScriptProcedureCollectionT<T>::get_Count(void)
{
  long plCount;
  OLECHECK(this->get_Count((long*)&plCount));
  return plCount;
}

// *********************************************************************//
// DispIntf:  IScriptProcedureCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C71-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptProcedureCollectionDispT<T>::get__NewEnum(LPUNKNOWN* ppenumProcedures/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppenumProcedures /*[VT_UNKNOWN:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
IScriptProcedureCollectionDispT<T>::get__NewEnum(void)
{
  LPUNKNOWN ppenumProcedures;
  this->get__NewEnum((LPUNKNOWN*)&ppenumProcedures);
  return ppenumProcedures;
}

template <class T> HRESULT __fastcall
IScriptProcedureCollectionDispT<T>::get_Item(VARIANT Index/*[in]*/, 
                                             Msscriptcontrol_tlb::IScriptProcedure** ppdispProcedure/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptProcedure**)ppdispProcedure /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptProcedure* __fastcall
IScriptProcedureCollectionDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Msscriptcontrol_tlb::IScriptProcedure* ppdispProcedure;
  this->get_Item(Index, (Msscriptcontrol_tlb::IScriptProcedure**)&ppdispProcedure);
  return ppdispProcedure;
}

template <class T> HRESULT __fastcall
IScriptProcedureCollectionDispT<T>::get_Count(long* plCount/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(1));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plCount /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptProcedureCollectionDispT<T>::get_Count(void)
{
  long plCount;
  this->get_Count((long*)&plCount);
  return plCount;
}

// *********************************************************************//
// SmartIntf: TCOMIScriptModule
// Interface: IScriptModule
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  return (*this)->get_Name(pbstrName);
}

template <class T> BSTR __fastcall
TCOMIScriptModuleT<T>::get_Name(void)
{
  BSTR pbstrName = 0;
  OLECHECK(this->get_Name((BSTR*)&pbstrName));
  return pbstrName;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/)
{
  return (*this)->get_CodeObject(ppdispObject);
}

template <class T> LPDISPATCH __fastcall
TCOMIScriptModuleT<T>::get_CodeObject(void)
{
  LPDISPATCH ppdispObject;
  OLECHECK(this->get_CodeObject((LPDISPATCH*)&ppdispObject));
  return ppdispObject;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/)
{
  return (*this)->get_Procedures(ppdispProcedures);
}

template <class T> Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall
TCOMIScriptModuleT<T>::get_Procedures(void)
{
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
  OLECHECK(this->get_Procedures((Msscriptcontrol_tlb::IScriptProcedureCollectionPtr*)&ppdispProcedures));
  return ppdispProcedures;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::AddCode(BSTR Code/*[in]*/)
{
  return (*this)->AddCode(Code);
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/)
{
  return (*this)->Eval(Expression, pvarResult);
}

template <class T> VARIANT __fastcall
TCOMIScriptModuleT<T>::Eval(BSTR Expression/*[in]*/)
{
  VARIANT pvarResult;
  OLECHECK(this->Eval(Expression/*[in]*/, (VARIANT*)&pvarResult));
  return pvarResult;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::ExecuteStatement(BSTR Statement/*[in]*/)
{
  return (*this)->ExecuteStatement(Statement);
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                           VARIANT* pvarResult/*[out,retval]*/)
{
  return (*this)->Run(ProcedureName, Parameters, pvarResult);
}

template <class T> VARIANT __fastcall
TCOMIScriptModuleT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
{
  VARIANT pvarResult;
  OLECHECK(this->Run(ProcedureName/*[in]*/, Parameters/*[in]*/, (VARIANT*)&pvarResult));
  return pvarResult;
}

// *********************************************************************//
// DispIntf:  IScriptModule
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C70-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::get_Name(BSTR* pbstrName/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Name"), DISPID(0));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrName /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptModuleDispT<T>::get_Name(void)
{
  BSTR pbstrName;
  this->get_Name((BSTR*)&pbstrName);
  return pbstrName;
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CodeObject"), DISPID(1000));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppdispObject /*[VT_DISPATCH:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPDISPATCH __fastcall
IScriptModuleDispT<T>::get_CodeObject(void)
{
  LPDISPATCH ppdispObject;
  this->get_CodeObject((LPDISPATCH*)&ppdispObject);
  return ppdispObject;
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Procedures"), DISPID(1001));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptProcedureCollection**)ppdispProcedures /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall
IScriptModuleDispT<T>::get_Procedures(void)
{
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
  this->get_Procedures(&ppdispProcedures);
  return ppdispProcedures;
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::AddCode(BSTR Code/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddCode"), DISPID(2000));
  TAutoArgs<1> _args;
  _args[1] = Code /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Eval"), DISPID(2001));
  TAutoArgs<1> _args;
  _args[1] = Expression /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr(pvarResult /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
IScriptModuleDispT<T>::Eval(BSTR Expression/*[in]*/)
{
  VARIANT pvarResult;
  this->Eval(Expression, (VARIANT*)&pvarResult);
  return pvarResult;
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::ExecuteStatement(BSTR Statement/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ExecuteStatement"), DISPID(2002));
  TAutoArgs<1> _args;
  _args[1] = Statement /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptModuleDispT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                           VARIANT* pvarResult/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Run"), DISPID(2003));
  TAutoArgs<2> _args;
  _args[1] = ProcedureName /*[VT_BSTR:0]*/;
  _args[2] = Parameters /*[VT_SAFEARRAY:1]*/;
  return OutRetValSetterPtr(pvarResult /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
IScriptModuleDispT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
{
  VARIANT pvarResult;
  this->Run(ProcedureName, Parameters, (VARIANT*)&pvarResult);
  return pvarResult;
}

// *********************************************************************//
// SmartIntf: TCOMIScriptModuleCollection
// Interface: IScriptModuleCollection
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptModuleCollectionT<T>::get__NewEnum(LPUNKNOWN* ppenumContexts/*[out,retval]*/)
{
  return (*this)->get__NewEnum(ppenumContexts);
}

template <class T> LPUNKNOWN __fastcall
TCOMIScriptModuleCollectionT<T>::get__NewEnum(void)
{
  LPUNKNOWN ppenumContexts;
  OLECHECK(this->get__NewEnum((LPUNKNOWN*)&ppenumContexts));
  return ppenumContexts;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleCollectionT<T>::get_Item(VARIANT Index/*[in]*/, 
                                          Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/)
{
  return (*this)->get_Item(Index, ppmod);
}

template <class T> Msscriptcontrol_tlb::IScriptModule* __fastcall
TCOMIScriptModuleCollectionT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Msscriptcontrol_tlb::IScriptModule* ppmod;
  OLECHECK(this->get_Item(Index/*[in]*/, (Msscriptcontrol_tlb::IScriptModule**)&ppmod));
  return ppmod;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleCollectionT<T>::get_Count(long* plCount/*[out,retval]*/)
{
  return (*this)->get_Count(plCount);
}

template <class T> long __fastcall
TCOMIScriptModuleCollectionT<T>::get_Count(void)
{
  long plCount;
  OLECHECK(this->get_Count((long*)&plCount));
  return plCount;
}

template <class T> HRESULT __fastcall
TCOMIScriptModuleCollectionT<T>::Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/, 
                                     Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/)
{
  return (*this)->Add(Name, Object, ppmod);
}

template <class T> Msscriptcontrol_tlb::IScriptModule* __fastcall
TCOMIScriptModuleCollectionT<T>::Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/)
{
  Msscriptcontrol_tlb::IScriptModule* ppmod;
  OLECHECK(this->Add(Name/*[in]*/, Object/*[in,opt]*/, (Msscriptcontrol_tlb::IScriptModule**)&ppmod));
  return ppmod;
}

// *********************************************************************//
// DispIntf:  IScriptModuleCollection
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C6F-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptModuleCollectionDispT<T>::get__NewEnum(LPUNKNOWN* ppenumContexts/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("_NewEnum"), DISPID(-4));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppenumContexts /*[VT_UNKNOWN:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPUNKNOWN __fastcall
IScriptModuleCollectionDispT<T>::get__NewEnum(void)
{
  LPUNKNOWN ppenumContexts;
  this->get__NewEnum((LPUNKNOWN*)&ppenumContexts);
  return ppenumContexts;
}

template <class T> HRESULT __fastcall
IScriptModuleCollectionDispT<T>::get_Item(VARIANT Index/*[in]*/, 
                                          Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Item"), DISPID(0));
  TAutoArgs<1> _args;
  _args[1] = Index /*[VT_VARIANT:0]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptModule**)ppmod /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptModule* __fastcall
IScriptModuleCollectionDispT<T>::get_Item(VARIANT Index/*[in]*/)
{
  Msscriptcontrol_tlb::IScriptModule* ppmod;
  this->get_Item(Index, (Msscriptcontrol_tlb::IScriptModule**)&ppmod);
  return ppmod;
}

template <class T> HRESULT __fastcall
IScriptModuleCollectionDispT<T>::get_Count(long* plCount/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Count"), DISPID(1));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plCount /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptModuleCollectionDispT<T>::get_Count(void)
{
  long plCount;
  this->get_Count((long*)&plCount);
  return plCount;
}

template <class T> HRESULT __fastcall
IScriptModuleCollectionDispT<T>::Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/, 
                                     Msscriptcontrol_tlb::IScriptModule** ppmod/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Add"), DISPID(2));
  TAutoArgs<2> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Object /*[VT_VARIANT:1]*/;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptModule**)ppmod /*[VT_USERDEFINED:2]*/, _args, OleFunction(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptModule* __fastcall
IScriptModuleCollectionDispT<T>::Add(BSTR Name/*[in]*/, VARIANT* Object/*[in,opt]*/)
{
  Msscriptcontrol_tlb::IScriptModule* ppmod;
  this->Add(Name, Object, (Msscriptcontrol_tlb::IScriptModule**)&ppmod);
  return ppmod;
}

// *********************************************************************//
// SmartIntf: TCOMIScriptError
// Interface: IScriptError
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Number(long* plNumber/*[out,retval]*/)
{
  return (*this)->get_Number(plNumber);
}

template <class T> long __fastcall
TCOMIScriptErrorT<T>::get_Number(void)
{
  long plNumber;
  OLECHECK(this->get_Number((long*)&plNumber));
  return plNumber;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Source(BSTR* pbstrSource/*[out,retval]*/)
{
  return (*this)->get_Source(pbstrSource);
}

template <class T> BSTR __fastcall
TCOMIScriptErrorT<T>::get_Source(void)
{
  BSTR pbstrSource = 0;
  OLECHECK(this->get_Source((BSTR*)&pbstrSource));
  return pbstrSource;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Description(BSTR* pbstrDescription/*[out,retval]*/)
{
  return (*this)->get_Description(pbstrDescription);
}

template <class T> BSTR __fastcall
TCOMIScriptErrorT<T>::get_Description(void)
{
  BSTR pbstrDescription = 0;
  OLECHECK(this->get_Description((BSTR*)&pbstrDescription));
  return pbstrDescription;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_HelpFile(BSTR* pbstrHelpFile/*[out,retval]*/)
{
  return (*this)->get_HelpFile(pbstrHelpFile);
}

template <class T> BSTR __fastcall
TCOMIScriptErrorT<T>::get_HelpFile(void)
{
  BSTR pbstrHelpFile = 0;
  OLECHECK(this->get_HelpFile((BSTR*)&pbstrHelpFile));
  return pbstrHelpFile;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_HelpContext(long* plHelpContext/*[out,retval]*/)
{
  return (*this)->get_HelpContext(plHelpContext);
}

template <class T> long __fastcall
TCOMIScriptErrorT<T>::get_HelpContext(void)
{
  long plHelpContext;
  OLECHECK(this->get_HelpContext((long*)&plHelpContext));
  return plHelpContext;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Text(BSTR* pbstrText/*[out,retval]*/)
{
  return (*this)->get_Text(pbstrText);
}

template <class T> BSTR __fastcall
TCOMIScriptErrorT<T>::get_Text(void)
{
  BSTR pbstrText = 0;
  OLECHECK(this->get_Text((BSTR*)&pbstrText));
  return pbstrText;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Line(long* plLine/*[out,retval]*/)
{
  return (*this)->get_Line(plLine);
}

template <class T> long __fastcall
TCOMIScriptErrorT<T>::get_Line(void)
{
  long plLine;
  OLECHECK(this->get_Line((long*)&plLine));
  return plLine;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::get_Column(long* plColumn/*[out,retval]*/)
{
  return (*this)->get_Column(plColumn);
}

template <class T> long __fastcall
TCOMIScriptErrorT<T>::get_Column(void)
{
  long plColumn;
  OLECHECK(this->get_Column((long*)&plColumn));
  return plColumn;
}

template <class T> HRESULT __fastcall
TCOMIScriptErrorT<T>::Clear(void)
{
  return (*this)->Clear();
}

// *********************************************************************//
// DispIntf:  IScriptError
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {70841C78-067D-11D0-95D8-00A02463AB28}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Number(long* plNumber/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Number"), DISPID(201));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plNumber /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptErrorDispT<T>::get_Number(void)
{
  long plNumber;
  this->get_Number((long*)&plNumber);
  return plNumber;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Source(BSTR* pbstrSource/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Source"), DISPID(202));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrSource /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptErrorDispT<T>::get_Source(void)
{
  BSTR pbstrSource;
  this->get_Source((BSTR*)&pbstrSource);
  return pbstrSource;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Description(BSTR* pbstrDescription/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Description"), DISPID(203));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrDescription /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptErrorDispT<T>::get_Description(void)
{
  BSTR pbstrDescription;
  this->get_Description((BSTR*)&pbstrDescription);
  return pbstrDescription;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_HelpFile(BSTR* pbstrHelpFile/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("HelpFile"), DISPID(204));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrHelpFile /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptErrorDispT<T>::get_HelpFile(void)
{
  BSTR pbstrHelpFile;
  this->get_HelpFile((BSTR*)&pbstrHelpFile);
  return pbstrHelpFile;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_HelpContext(long* plHelpContext/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("HelpContext"), DISPID(205));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plHelpContext /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptErrorDispT<T>::get_HelpContext(void)
{
  long plHelpContext;
  this->get_HelpContext((long*)&plHelpContext);
  return plHelpContext;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Text(BSTR* pbstrText/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Text"), DISPID(-517));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrText /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptErrorDispT<T>::get_Text(void)
{
  BSTR pbstrText;
  this->get_Text((BSTR*)&pbstrText);
  return pbstrText;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Line(long* plLine/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Line"), DISPID(206));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plLine /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptErrorDispT<T>::get_Line(void)
{
  long plLine;
  this->get_Line((long*)&plLine);
  return plLine;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::get_Column(long* plColumn/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Column"), DISPID(-529));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plColumn /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptErrorDispT<T>::get_Column(void)
{
  long plColumn;
  this->get_Column((long*)&plColumn);
  return plColumn;
}

template <class T> HRESULT __fastcall
IScriptErrorDispT<T>::Clear()
{
  _TDispID _dispid(*this, OLETEXT("Clear"), DISPID(208));
  return OleFunction(_dispid);
}

// *********************************************************************//
// SmartIntf: TCOMIScriptControl
// Interface: IScriptControl
// *********************************************************************//
template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_Language(BSTR* pbstrLanguage/*[out,retval]*/)
{
  return (*this)->get_Language(pbstrLanguage);
}

template <class T> BSTR __fastcall
TCOMIScriptControlT<T>::get_Language(void)
{
  BSTR pbstrLanguage = 0;
  OLECHECK(this->get_Language((BSTR*)&pbstrLanguage));
  return pbstrLanguage;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_Language(BSTR pbstrLanguage/*[in]*/)
{
  return (*this)->set_Language(pbstrLanguage);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_State(Msscriptcontrol_tlb::ScriptControlStates* pssState/*[out,retval]*/)
{
  return (*this)->get_State(pssState);
}

template <class T> Msscriptcontrol_tlb::ScriptControlStates __fastcall
TCOMIScriptControlT<T>::get_State(void)
{
  Msscriptcontrol_tlb::ScriptControlStates pssState;
  OLECHECK(this->get_State((Msscriptcontrol_tlb::ScriptControlStates*)&pssState));
  return pssState;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_State(Msscriptcontrol_tlb::ScriptControlStates pssState/*[in]*/)
{
  return (*this)->set_State(pssState);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_SitehWnd(long phwnd/*[in]*/)
{
  return (*this)->set_SitehWnd(phwnd);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_SitehWnd(long* phwnd/*[out,retval]*/)
{
  return (*this)->get_SitehWnd(phwnd);
}

template <class T> long __fastcall
TCOMIScriptControlT<T>::get_SitehWnd(void)
{
  long phwnd;
  OLECHECK(this->get_SitehWnd((long*)&phwnd));
  return phwnd;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_Timeout(long* plMilleseconds/*[out,retval]*/)
{
  return (*this)->get_Timeout(plMilleseconds);
}

template <class T> long __fastcall
TCOMIScriptControlT<T>::get_Timeout(void)
{
  long plMilleseconds;
  OLECHECK(this->get_Timeout((long*)&plMilleseconds));
  return plMilleseconds;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_Timeout(long plMilleseconds/*[in]*/)
{
  return (*this)->set_Timeout(plMilleseconds);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_AllowUI(VARIANT_BOOL* pfAllowUI/*[out,retval]*/)
{
  return (*this)->get_AllowUI(pfAllowUI);
}

template <class T> VARIANT_BOOL __fastcall
TCOMIScriptControlT<T>::get_AllowUI(void)
{
  VARIANT_BOOL pfAllowUI;
  OLECHECK(this->get_AllowUI((VARIANT_BOOL*)&pfAllowUI));
  return pfAllowUI;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_AllowUI(VARIANT_BOOL pfAllowUI/*[in]*/)
{
  return (*this)->set_AllowUI(pfAllowUI);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_UseSafeSubset(VARIANT_BOOL* pfUseSafeSubset/*[out,retval]*/)
{
  return (*this)->get_UseSafeSubset(pfUseSafeSubset);
}

template <class T> VARIANT_BOOL __fastcall
TCOMIScriptControlT<T>::get_UseSafeSubset(void)
{
  VARIANT_BOOL pfUseSafeSubset;
  OLECHECK(this->get_UseSafeSubset((VARIANT_BOOL*)&pfUseSafeSubset));
  return pfUseSafeSubset;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::set_UseSafeSubset(VARIANT_BOOL pfUseSafeSubset/*[in]*/)
{
  return (*this)->set_UseSafeSubset(pfUseSafeSubset);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_Modules(Msscriptcontrol_tlb::IScriptModuleCollection** ppmods/*[out,retval]*/)
{
  return (*this)->get_Modules(ppmods);
}

template <class T> Msscriptcontrol_tlb::IScriptModuleCollectionPtr __fastcall
TCOMIScriptControlT<T>::get_Modules(void)
{
  Msscriptcontrol_tlb::IScriptModuleCollectionPtr ppmods;
  OLECHECK(this->get_Modules((Msscriptcontrol_tlb::IScriptModuleCollectionPtr*)&ppmods));
  return ppmods;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_Error(Msscriptcontrol_tlb::IScriptError** ppse/*[out,retval]*/)
{
  return (*this)->get_Error(ppse);
}

template <class T> Msscriptcontrol_tlb::IScriptErrorPtr __fastcall
TCOMIScriptControlT<T>::get_Error(void)
{
  Msscriptcontrol_tlb::IScriptErrorPtr ppse;
  OLECHECK(this->get_Error((Msscriptcontrol_tlb::IScriptErrorPtr*)&ppse));
  return ppse;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/)
{
  return (*this)->get_CodeObject(ppdispObject);
}

template <class T> LPDISPATCH __fastcall
TCOMIScriptControlT<T>::get_CodeObject(void)
{
  LPDISPATCH ppdispObject;
  OLECHECK(this->get_CodeObject((LPDISPATCH*)&ppdispObject));
  return ppdispObject;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/)
{
  return (*this)->get_Procedures(ppdispProcedures);
}

template <class T> Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall
TCOMIScriptControlT<T>::get_Procedures(void)
{
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
  OLECHECK(this->get_Procedures((Msscriptcontrol_tlb::IScriptProcedureCollectionPtr*)&ppdispProcedures));
  return ppdispProcedures;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::_AboutBox(void)
{
  return (*this)->_AboutBox();
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::AddObject(BSTR Name/*[in]*/, LPDISPATCH Object/*[in]*/, 
                                  VARIANT_BOOL AddMembers/*[in,def,opt]*/)
{
  return (*this)->AddObject(Name, Object, AddMembers);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::Reset(void)
{
  return (*this)->Reset();
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::AddCode(BSTR Code/*[in]*/)
{
  return (*this)->AddCode(Code);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/)
{
  return (*this)->Eval(Expression, pvarResult);
}

template <class T> VARIANT __fastcall
TCOMIScriptControlT<T>::Eval(BSTR Expression/*[in]*/)
{
  VARIANT pvarResult;
  OLECHECK(this->Eval(Expression/*[in]*/, (VARIANT*)&pvarResult));
  return pvarResult;
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::ExecuteStatement(BSTR Statement/*[in]*/)
{
  return (*this)->ExecuteStatement(Statement);
}

template <class T> HRESULT __fastcall
TCOMIScriptControlT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                            VARIANT* pvarResult/*[out,retval]*/)
{
  return (*this)->Run(ProcedureName, Parameters, pvarResult);
}

template <class T> VARIANT __fastcall
TCOMIScriptControlT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
{
  VARIANT pvarResult;
  OLECHECK(this->Run(ProcedureName/*[in]*/, Parameters/*[in]*/, (VARIANT*)&pvarResult));
  return pvarResult;
}

// *********************************************************************//
// DispIntf:  IScriptControl
// Flags:     (4560) Hidden Dual NonExtensible OleAutomation Dispatchable
// GUID:      {0E59F1D3-1FBE-11D0-8FF2-00A0D10038BC}
// *********************************************************************//
template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_Language(BSTR* pbstrLanguage/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Language"), DISPID(1500));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pbstrLanguage /*[VT_BSTR:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> BSTR __fastcall
IScriptControlDispT<T>::get_Language(void)
{
  BSTR pbstrLanguage;
  this->get_Language((BSTR*)&pbstrLanguage);
  return pbstrLanguage;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_Language(BSTR pbstrLanguage/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Language"), DISPID(1500));
  TAutoArgs<1> _args;
  _args[1] = pbstrLanguage /*[VT_BSTR:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_State(Msscriptcontrol_tlb::ScriptControlStates* pssState/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(1501));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((int*)pssState /*[VT_USERDEFINED:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::ScriptControlStates __fastcall
IScriptControlDispT<T>::get_State(void)
{
  Msscriptcontrol_tlb::ScriptControlStates pssState;
  this->get_State((Msscriptcontrol_tlb::ScriptControlStates*)&pssState);
  return pssState;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_State(Msscriptcontrol_tlb::ScriptControlStates pssState/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("State"), DISPID(1501));
  TAutoArgs<1> _args;
  _args[1] = (int)pssState /*[VT_USERDEFINED:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_SitehWnd(long phwnd/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("SitehWnd"), DISPID(1502));
  TAutoArgs<1> _args;
  _args[1] = phwnd /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_SitehWnd(long* phwnd/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("SitehWnd"), DISPID(1502));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(phwnd /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptControlDispT<T>::get_SitehWnd(void)
{
  long phwnd;
  this->get_SitehWnd((long*)&phwnd);
  return phwnd;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_Timeout(long* plMilleseconds/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Timeout"), DISPID(1503));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(plMilleseconds /*[VT_I4:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> long __fastcall
IScriptControlDispT<T>::get_Timeout(void)
{
  long plMilleseconds;
  this->get_Timeout((long*)&plMilleseconds);
  return plMilleseconds;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_Timeout(long plMilleseconds/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("Timeout"), DISPID(1503));
  TAutoArgs<1> _args;
  _args[1] = plMilleseconds /*[VT_I4:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_AllowUI(VARIANT_BOOL* pfAllowUI/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("AllowUI"), DISPID(1504));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfAllowUI /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
IScriptControlDispT<T>::get_AllowUI(void)
{
  VARIANT_BOOL pfAllowUI;
  this->get_AllowUI((VARIANT_BOOL*)&pfAllowUI);
  return pfAllowUI;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_AllowUI(VARIANT_BOOL pfAllowUI/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AllowUI"), DISPID(1504));
  TAutoArgs<1> _args;
  _args[1] = pfAllowUI /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_UseSafeSubset(VARIANT_BOOL* pfUseSafeSubset/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("UseSafeSubset"), DISPID(1505));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(pfUseSafeSubset /*[VT_BOOL:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> VARIANT_BOOL __fastcall
IScriptControlDispT<T>::get_UseSafeSubset(void)
{
  VARIANT_BOOL pfUseSafeSubset;
  this->get_UseSafeSubset((VARIANT_BOOL*)&pfUseSafeSubset);
  return pfUseSafeSubset;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::set_UseSafeSubset(VARIANT_BOOL pfUseSafeSubset/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("UseSafeSubset"), DISPID(1505));
  TAutoArgs<1> _args;
  _args[1] = pfUseSafeSubset /*[VT_BOOL:0]*/;
  return OlePropertyPut(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_Modules(Msscriptcontrol_tlb::IScriptModuleCollection** ppmods/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Modules"), DISPID(1506));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptModuleCollection**)ppmods /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptModuleCollectionPtr __fastcall
IScriptControlDispT<T>::get_Modules(void)
{
  Msscriptcontrol_tlb::IScriptModuleCollectionPtr ppmods;
  this->get_Modules(&ppmods);
  return ppmods;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_Error(Msscriptcontrol_tlb::IScriptError** ppse/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Error"), DISPID(1507));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptError**)ppse /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptErrorPtr __fastcall
IScriptControlDispT<T>::get_Error(void)
{
  Msscriptcontrol_tlb::IScriptErrorPtr ppse;
  this->get_Error(&ppse);
  return ppse;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_CodeObject(LPDISPATCH* ppdispObject/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("CodeObject"), DISPID(1000));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr(ppdispObject /*[VT_DISPATCH:1]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> LPDISPATCH __fastcall
IScriptControlDispT<T>::get_CodeObject(void)
{
  LPDISPATCH ppdispObject;
  this->get_CodeObject((LPDISPATCH*)&ppdispObject);
  return ppdispObject;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::get_Procedures(Msscriptcontrol_tlb::IScriptProcedureCollection** ppdispProcedures/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Procedures"), DISPID(1001));
  TAutoArgs<0> _args;
  return OutRetValSetterPtr((LPDISPATCH*)(Msscriptcontrol_tlb::IScriptProcedureCollection**)ppdispProcedures /*[VT_USERDEFINED:2]*/, _args, OlePropertyGet(_dispid, _args));
}

template <class T> Msscriptcontrol_tlb::IScriptProcedureCollectionPtr __fastcall
IScriptControlDispT<T>::get_Procedures(void)
{
  Msscriptcontrol_tlb::IScriptProcedureCollectionPtr ppdispProcedures;
  this->get_Procedures(&ppdispProcedures);
  return ppdispProcedures;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::_AboutBox()
{
  _TDispID _dispid(*this, OLETEXT("_AboutBox"), DISPID(-552));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::AddObject(BSTR Name/*[in]*/, LPDISPATCH Object/*[in]*/, 
                                  VARIANT_BOOL AddMembers/*[in,def,opt]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddObject"), DISPID(2500));
  TAutoArgs<3> _args;
  _args[1] = Name /*[VT_BSTR:0]*/;
  _args[2] = Object /*[VT_DISPATCH:0]*/;
  _args[3] = AddMembers /*[VT_BOOL:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::Reset()
{
  _TDispID _dispid(*this, OLETEXT("Reset"), DISPID(2501));
  return OleFunction(_dispid);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::AddCode(BSTR Code/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("AddCode"), DISPID(2000));
  TAutoArgs<1> _args;
  _args[1] = Code /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::Eval(BSTR Expression/*[in]*/, VARIANT* pvarResult/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Eval"), DISPID(2001));
  TAutoArgs<1> _args;
  _args[1] = Expression /*[VT_BSTR:0]*/;
  return OutRetValSetterPtr(pvarResult /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
IScriptControlDispT<T>::Eval(BSTR Expression/*[in]*/)
{
  VARIANT pvarResult;
  this->Eval(Expression, (VARIANT*)&pvarResult);
  return pvarResult;
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::ExecuteStatement(BSTR Statement/*[in]*/)
{
  _TDispID _dispid(*this, OLETEXT("ExecuteStatement"), DISPID(2002));
  TAutoArgs<1> _args;
  _args[1] = Statement /*[VT_BSTR:0]*/;
  return OleFunction(_dispid, _args);
}

template <class T> HRESULT __fastcall
IScriptControlDispT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/, 
                            VARIANT* pvarResult/*[out,retval]*/)
{
  _TDispID _dispid(*this, OLETEXT("Run"), DISPID(2003));
  TAutoArgs<2> _args;
  _args[1] = ProcedureName /*[VT_BSTR:0]*/;
  _args[2] = Parameters /*[VT_SAFEARRAY:1]*/;
  return OutRetValSetterPtr(pvarResult /*[VT_VARIANT:1]*/, _args, OleFunction(_dispid, _args));
}

template <class T> VARIANT __fastcall
IScriptControlDispT<T>::Run(BSTR ProcedureName/*[in]*/, LPSAFEARRAY* Parameters/*[in]*/)
{
  VARIANT pvarResult;
  this->Run(ProcedureName, Parameters, (VARIANT*)&pvarResult);
  return pvarResult;
}

// *********************************************************************//
// DispIntf:  DScriptControlSource
// Flags:     (4112) Hidden Dispatchable
// GUID:      {8B167D60-8605-11D0-ABCB-00A0C90FFFC0}
// *********************************************************************//
template <class T> void __fastcall
DScriptControlSourceDispT<T>::Error()
{
  _TDispID _dispid(/* Error */ DISPID(3000));
  OleProcedure(_dispid);
}

template <class T> void __fastcall
DScriptControlSourceDispT<T>::Timeout()
{
  _TDispID _dispid(/* Timeout */ DISPID(3001));
  OleProcedure(_dispid);
}

// *********************************************************************//
// The following typedefs expose classes (named CoCoClassName) that       
// provide static Create() and CreateRemote(LPWSTR machineName) methods   
// for creating an instance of an exposed object. These functions can     
// be used by client wishing to automate CoClasses exposed by this        
// typelibrary.                                                           
// *********************************************************************//

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Procedure
// Interface: TCOMIScriptProcedure
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIScriptProcedure, IScriptProcedure, &CLSID_Procedure, &IID_IScriptProcedure> CoProcedure;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Procedures
// Interface: TCOMIScriptProcedureCollection
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIScriptProcedureCollection, IScriptProcedureCollection, &CLSID_Procedures, &IID_IScriptProcedureCollection> CoProcedures;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Module
// Interface: TCOMIScriptModule
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIScriptModule, IScriptModule, &CLSID_Module, &IID_IScriptModule> CoModule;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Modules
// Interface: TCOMIScriptModuleCollection
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIScriptModuleCollection, IScriptModuleCollection, &CLSID_Modules, &IID_IScriptModuleCollection> CoModules;

// *********************************************************************//
// COCLASS DEFAULT INTERFACE CREATOR
// CoClass  : Error
// Interface: TCOMIScriptError
// *********************************************************************//
typedef TCoClassCreatorT<TCOMIScriptError, IScriptError, &CLSID_Error, &IID_IScriptError> CoError;
#endif  //   __TLB_NO_INTERFACE_WRAPPERS


#if !defined(__TLB_NO_EVENT_WRAPPERS) && defined(USING_ATLVCL)
// *********************************************************************//
// CONNECTIONPOINT/EVENT PROXY
// CoClass         : ScriptControl
// Event Interface : DScriptControlSource
// *********************************************************************//
template <class T>
class TEvents_ScriptControl : public IConnectionPointImpl<T,
                                                 &DIID_DScriptControlSource,
#if !defined(_TLB_DYNAMIC_CONNECTIONPOINT_ARRAY)
                                                 CComUnkArray<CONNECTIONPOINT_ARRAY_SIZE> >
#else
                                                 CComDynamicArray>
#endif
{
public:
  void            Fire_Error(void);
  void            Fire_Timeout(void);
protected:
  DScriptControlSourceDisp m_EventIntfObj;
};

template <class T> void
TEvents_ScriptControl<T>::Fire_Error(void)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.Error();
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

template <class T> void
TEvents_ScriptControl<T>::Fire_Timeout(void)
{
  T * pT = (T*)this;
  pT->Lock();
  IUnknown ** pp = m_vec.begin();
  while (pp < m_vec.end())
  {
    if (*pp != NULL)
    {
      m_EventIntfObj.Attach(*pp);
      m_EventIntfObj.Timeout();
      m_EventIntfObj.Attach(0);
    }
    pp++;
  }
  pT->Unlock();
}

#endif  //   __TLB_NO_EVENT_WRAPPERS

};     // namespace Msscriptcontrol_tlb

#if !defined(NO_IMPLICIT_NAMESPACE_USE)
using  namespace Msscriptcontrol_tlb;
#endif

#pragma option pop

#endif // MSScriptControl_TLBH
